package xyz.ag.Service.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import xyz.ag.Beans.Book;
import xyz.ag.Beans.Menu;
import xyz.ag.DAO.BookDAOInterface;
import xyz.ag.DAO.impl.BookDAOInterfaceImpl;
import xyz.ag.Service.BookServiceInterface;

public class BookServiceInterfaceImpl implements BookServiceInterface{
	
	BookDAOInterface BookDI= new BookDAOInterfaceImpl();

	@Override
	/**
	 * 获取所有的书籍分类 由大分类嵌套小分类组成一个线性表集合
	 */
	public ArrayList<Menu> getAllification() {
		// TODO 自动生成的方法存根
		ArrayList<Menu> menulist = new ArrayList<Menu>();//数组转换
		try {
			HashMap<String, ArrayList<String>> mentbook = BookDI.getAllification();
			Iterator iter = mentbook.keySet().iterator();
			while(iter.hasNext()){
			
				Menu m = new Menu();
				Object key = iter.next();
				m.setMenu(String.valueOf(key));
				m.setList(mentbook.get(key));
				menulist.add(m);
			}
			
			return menulist;
			
		} catch (SQLException e) {
			System.err.println("在尝试获取数据库分类的列表时出现异常");
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 查询推荐列表 返回的是一个字符串形式的数字
	 */
	@Override
	public Integer getrecommendedListNmuber() {
		// TODO 自动生成的方法存根
		try {
			return BookDI.getrecommendedListNmuber();
		} catch (Exception e) {
			System.err.println("查询列表总数错误");
			e.printStackTrace();
		}
		return 0;
	}

	@Override
	/**
	 * 推荐列表的分页实现
	 */
	public ArrayList<Book> getBookLimitpageList(String page, String number) {
		// TODO 自动生成的方法存根
		try {
			return BookDI.getBookLimitpageList(Integer.parseInt(page),Integer.parseInt(number));
			
		} catch (SQLException e) {
			/**
			 * 查询有问题的时候
			 */
			e.printStackTrace();
			System.err.println("推荐列表查询异常");
			ArrayList al = new ArrayList<Book>();
		     al.add(new Book("有点小问题,刷新下","有点小问题,刷新下","有点小问题,刷新下","package/image/load.jpg"));
		     return al;
		}
	}

	@Override
	public ArrayList<Book> getBookListByCondition(String page, String number, String s) {
		// TODO 自动生成的方法存根
		try {
			return BookDI.getBookListByCondition( page,number,s);
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		ArrayList al = new ArrayList<Book>();
		al.add(new Book("有点小问题,刷新下","有点小问题,刷新下","有点小问题,刷新下","package/image/load.jpg"));
	     return al;
	}

	/**
	 * 根据条件查询图书数量
	 */
	@Override
	public Integer initshowlistnumber(String s) {
		try {
			return BookDI.initshowlistnumber( s);
		} catch (SQLException e) {
			System.err.println("图书数量查询失败");
			
			e.printStackTrace();
			return 10;
		}
	}

	/**
	 * Ajax支持函数 用来回调显示页面上的图书占展示
	 */
	@Override
	public Book shouBookByBookName(String bookname) {
		
		try {
		 Book book = BookDI.shouBookByBookName(bookname);
		  book.setCategory(BookDI.getBookcategoryByID(book.getCategory()));   // 数据聚合
		  return book;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return null;
	}
	
}
